//有效三角形的个数

class Solution {
public:
    int triangleNumber(vector<int>& nums) 
    {
        //三条边 按照最长的那边条是哪个元素 开始逐个讨论
        //由于组成三角形的性质需要保证 先将数组进行排序
        int res=0;
        sort(nums.begin(),nums.end());
        for(int i=nums.size()-1;i>=2;i--)
        {
            //以nums[i]作为最长的那个边 既然数组已经排序了 那就从剩下元素的
            //头尾开始遍历
            int l=0,r=i-1;
            while(l<r)
            {
                if(nums[l]+nums[r]>nums[i])
                {
                    res+=r-l;
                    r--;
                }
                else
                {
                    l++;
                }
            }
        }
        return res;
    }
};
//盛最多水的容器
class Solution {
public:
    int maxArea(vector<int>& height) 
    {
        //双指针分别指向头尾 往里收缩
        int res=0;
        int l=0,r=height.size()-1;
        while(l<r)
        {
            int tmp=min(height[l],height[r])*(r-l);
            res=max(res,tmp);
            if(height[l] > height[r]) r--;
            else l++;
        }
        return res;
    }
};
